Micron Document
██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝


🬧 The NomadNet Encyclopedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

ALGOL
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwbgALGOL (abbreviazione di mwbwmwcaALGOrithmic mwcqLanguage, ossia linguaggio algoritmico) è un mwcglinguaggio di programmazione sviluppato nel mwcw1958. In un certo senso fu una reazione al mwdaFortran; introdusse concetti fondamentali come lo mwdqstack dei record di attivazione e per certi versi si può considerare capostipite di una grande famiglia di linguaggi di notevole successo, dal mwdgPascal al mwdwC.

Per una trentina d'anni è stato lo mweqstandard mwegmwewde facto con cui si rappresentavano gli mwfaalgoritmi. L'ALGOL utilizza blocchi di mwfqistruzioni delimitati da coppie di mwfgbegin ed mwfwend (come il Pascal); è stato il primo linguaggio ad usare questa mwgasintassi molto utilizzata anche in didattica: frammenti di sintassi simile all'ALGOL sono tuttora utilizzati a volte come notazione per gli algoritmi chiamata Pidgin Algol.

Esistono tre versioni ufficiali di ALGOL: ALGOL 58, ALGOL 60 ed mwhqALGOL 68. Di queste, solo ALGOL 60 si è diffusa (mwhgNiklaus Wirth basò il proprio Algol-W sull'ALGOL 60 prima di cominciare a sviluppare il mwiaPascal). I nomi ufficiali delle versioni di ALGOL sono dovuti all'anno di pubblicazione. L'ALGOL 58 era conosciuto originariamente come mwiqIAL (l'acronimo di mwigInternational mwiwAlgorithmic mwjaLanguage.)

Contents

Storia

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Storia

L'ALGOL è stato sviluppato congiuntamente da un comitato di informatici statunitense ed europeo. Esistono tre differenti sintassi: una sintassi di riferimento, una sintassi per la pubblicazione ed una per l'implementazione. Le differenti sintassi permisero di usare differenti parole chiave e convenzioni per i punti decimali (punti o virgole) a seconda della lingua utilizzata.

mwkqJohn Backus sviluppò il metodo di descrizione dei linguaggi di programmazione detto forma normale di Backus (BNF) specificatamente per l'ALGOL 58. È stato rivisto ed ampliato da mwkgPeter Naur nella mwkwforma Backus-Naur per l'ALGOL 60. Sia Backus che Naur fecero parte del comitato che creò l'ALGOL 60. L'ALGOL 60 ispirò molti dei linguaggi che seguirono; la citazione canonica a questo proposito è dovuta a mwlaC. A. R. Hoare: "ALGOL fu un grande progresso sui suoi successori". La citazione completa è: "Qui c'è un linguaggio così avanzato che non è solo un miglioramento rispetto ai predecessori ma anche rispetto ai propri successori" ma l'aforisma è più conosciuto. A volte viene attribuito erroneamente a mwlqEdsger Dijkstra, conosciuto per le acute osservazioni, che collaborò all'implementazione del primo mwlgcompilatore per ALGOL 60.

Il B5000 della Burroughs Corporation ed i suoi successori erano macchine a stack progettate per essere programmate mediante varianti estese dell'ALGOL 60, conosciute come Elliot ALGOL; effettivamente il loro mwnasistema operativo chiamato MCP (Master Control Program) era scritto in Elliot ALGOL fin dal 1961. La Unisys Corporation vende ancora computer che discendono dal B5000, utilizzano l'MCP e supportano vari compilatori di Elliot ALGOL.

ALGOL 60 ufficialmente non possedeva istruzioni di I/O; le varie implementazioni necessariamente dovettero implementarle ma il modo variava da un'implementazione all'altra. ALGOL 68 offrì invece una completa libreria di istruzioni di mwnwtransput (il termine usato da ALGOL 68 per indicare l'Input/Output).

L'ALGOL 60 era dotato di due modalità di passaggio dei parametri: il più comune è detto mwoqpassaggio per valore, l'altro chiamato mwogpassaggio per nome non è mai stato adottato da nessun altro linguaggio di programmazione successivo. Il passaggio per nome aveva alcune limitazioni rispetto al mwowpassaggio per riferimento, facendone una caratteristica indesiderata nella progettazione del linguaggio. Per esempio, è impossibile con l'ALGOL 60 sviluppare una procedura che scambi i valori di due parametri se i parametri sono passati mediante una variabile intera ed un array indicizzato mediante la stessa variabile intera.

L'ALGOL 68 è stato definito mediante un formalismo chiamato grammatica a due livelli creato da mwpqAdriaan van Wijngaarden e dal quale ha preso il nome. Le mwpggrammatiche di Van Wijngaarden utilizzano una mwpwgrammatica libera dal contesto per generare un insieme infinito di produzioni che permettono di riconoscere un particolare programma in ALGOL 68; sono in grado di esprimere il tipo di richieste che in molti altri standard di linguaggi di programmazione vanno sotto il nome di semantica e devono essere espresse in linguaggio naturale non ambiguo ed in seguito implementati nei compilatori come codice mwqaad hoc collegato col parser del linguaggio formale.

Esempio di programma (ALGOL 60)

Il modo in cui deve essere scritto il testo in grassetto dipende dalla particolare implementazione (es. 'INTEGER' in luogo di 'integer').

procedure Absmax(a) Size:(n, m) Result:(y) Subscripts:(i, k);
value n, m; array a; integer n, m, i, k; real y;
comment The absolute greatest element of the matrix a, of size n by m
is transferred to y, and the subscripts of this element to i and k;
begin integer p, q;
y := 0; i := k := 1;
for p:=1 step 1 until n do
for q:=1 step 1 until m do
if abs(a[p, q]) > y then
begin y := abs(a[p, q]);
i := p; k := q
end
end Absmax

Hello world

Poiché ALGOL 60 non possiede istruzioni di I/O native, non esiste una versione di "mwwgHello World" portabile. Il codice seguente può essere eseguito sull'implementazione di ALGOL per i mwwwmainframe Burroughs A-Series ed è tratta da mwxaquesto sito. URL consultato il 6 novembre 2017 (archiviato dall'url originale il 4 febbraio 2010).:

BEGIN
FILE F (KIND=REMOTE);
EBCDIC ARRAY E [0:11];
REPLACE E BY "HELLO WORLD!";
WHILE TRUE DO
BEGIN
WRITE (F, *, E);
END;
END.

Un esempio alternativo che utilizza le primitive di I/O dell'Elliott ALGOL è presentato qui di seguito. In realtà l'Elliott ALGOL usa caratteri differenti per 'inizio-stringa' e 'fine-stringa':

program HiFolks;
begin
print ‘Hello world’;
end;

Altri progetti

Altri progetti

• Wikimedia Commons

• Wikimedia Commons contiene immagini o altri file su ALGOL

Collegamenti esterni

• citerefsapere-itALGOL, su sapere.it, De Agostini.
• citerefenciclopedia-della-matematicaALGOL, in Enciclopedia della Matematica, Istituto dell'Enciclopedia Italiana, 2013.
• citerefbritannica-com(EN) David Hemmendinger, ALGOL, su Enciclopedia Britannica, Encyclopædia Britannica, Inc.
• citerefspringereom(EN) Algorithmic language, su Encyclopaedia of Mathematics, Springer e European Mathematical Society.
• mwagMarst traduttore Algol 60 → C, su gnu.org.
• mwba(EN) Manuale di linguaggio Algol 60 per l'IBM 360, su bitsavers.org.
• mwbg(EN) Riferimento per Algol 60, su masswerk.at.

• mwcq(EN) Articolo di Charles Lindsey che spiega la nascita del linguaggio e probabilmente sfata alcuni miti., su cs.man.ac.uk (archiviato dall'url originale il 3 dicembre 2005).
• mwcw(EN) La sintassi dell'ALGOL 60, su lrz.de. URL consultato il 6 novembre 2017 (archiviato dall'url originale il 20 luglio 2011).
• mwdq(EN) A tutorial on Algol 68, su hdl.handle.net.